<?php
// +----------------------------------------------------------------------
// | RXThinkCMF_EVTP5.1_PRO前后端分离旗舰版框架 [ RXThinkCMF ]
// +----------------------------------------------------------------------
// | 版权所有 2018~2021 南京RXThinkCMF研发中心
// +----------------------------------------------------------------------
// | 官方网站: http://www.rxthink.cn
// +----------------------------------------------------------------------
// | 作者: ZhangXuanNeng <rxthinkcmf@163.com>
// +----------------------------------------------------------------------
// | 免责声明:
// | 本软件框架禁止任何单位和个人用于任何违法、侵害他人合法利益等恶意的行为，禁止用于任何违
// | 反我国法律法规的一切平台研发，任何单位和个人使用本软件框架用于产品研发而产生的任何意外
// | 、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带
// | 或衍生的损失等)，本团队不承担任何法律责任。本软件框架只能用于公司和个人内部的法律所允
// | 许的合法合规的软件产品研发，详细声明内容请阅读《框架免责声明》附件；
// +----------------------------------------------------------------------

namespace app\admin\controller;

/**
 * 后台基类-控制器
 * @author ZhangXuanNeng
 * @since 2020/11/19
 * Class Backend
 * @package app\common\controller
 */
class Backend extends BaseController
{
    // 模型
    protected $model;
    // 服务
    protected $service;
    // 登录ID
    protected $userId;
    // 登录信息
    protected $userInfo;

    /**
     * 初始化
     * @author ZhangXuanNeng
     * @since 2020/11/19
     */
    protected function initialize()
    {
        parent::initialize(); // TODO: Change the autogenerated stub

        // 获取Token
        $token = request()->header("Authorization");
        if ($token && strpos($token, 'Bearer ') !== false) {
            $token = str_replace("Bearer ", null, $token);
            // JWT解密token
            $jwt = new \Jwt();
            $this->userId = $jwt->verifyToken($token);
        }

        // 初始化配置
        $this->initConfig();

    }

    /**
     * JSON返回函数
     * @author ZhangXuanNeng
     * @since 2020/11/19
     */
    public function jsonReturn()
    {
        false && message();

        // 获取参数
        $arr = func_get_args();

        if (!is_array($arr[0])) {
            // 回调函数
            $result = call_user_func_array("message", $arr);
        } else {
            // 函数模式
            $result = $arr[0];
        }

        // 返回结果
        $output = json_encode($result);
//        // DES加密处理
//        $output = encrypt($output);
//        // DES解密
//        if (getter($this->req, 'decrypt')) {
//            $output = decrypt($output);
//        }
        echo $output;
        exit();
    }

    /**
     * 初始化配置
     * @author ZhangXuanNeng
     * @since 2020/11/19
     */
    private function initConfig()
    {
        // 请求参数
        $this->param = $this->request->param();
        request()->param();

        // 分页基础默认值
        defined('PERPAGE') or define('PERPAGE', isset($this->param['limit']) ? $this->param['limit'] : 20);
        defined('PAGE') or define('PAGE', isset($this->param['page']) ? $this->param['page'] : 1);
    }

    /**
     * 获取数据列表
     * @return mixed
     * @since 2020/11/11
     * @author ZhangXuanNeng
     */
    public function index()
    {
        $result = $this->service->getList();
        return $this->jsonReturn($result);
    }

    /**
     * 获取数据详情
     * @return mixed
     * @since 2020/11/11
     * @author ZhangXuanNeng
     */
    public function info()
    {
        $result = $this->service->info();
        return $this->jsonReturn($result);
    }

    /**
     * 添加或编辑
     * @return mixed
     * @since 2020/11/11
     * @author ZhangXuanNeng
     */
    public function edit()
    {
        $result = $this->service->edit();
        return $this->jsonReturn($result);
    }

    /**
     * 删除数据
     * @return mixed
     * @since 2020/11/11
     * @author ZhangXuanNeng
     */
    public function delete()
    {
        $result = $this->service->delete();
        return $this->jsonReturn($result);
    }

    /**
     * 设置状态
     * @author ZhangXuanNeng
     * @since 2020/11/20
     */
    public function status()
    {
        $result = $this->service->status();
        return $this->jsonReturn($result);
    }

}
